package cn.itcast.nems.order.dto;

import cn.itcast.nems.common.entity.UUIDEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 退学凭单-头
 * </p>
 *
 * @author 陈早庆
 * @since 2023-12-07
 */
@Getter
@Setter
public class JournalDropoutDTO extends UUIDEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 退学的学籍ID
     */
    private String studentRecordId;

    /**
     * 业务实际办理日期;退学日期。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime bizDate;

    /**
     * 退费类型;枚举值：退学不退费｜、退学退费｜
     */
    private String type;

    /**
     * 退学的班级ID
     */
    private Integer clazzId;

    /**
     * 退学原因CODE;来自字典表
     */
    private String reasonCode;

    /**
     * 退学原因说明;来自字典表
     */
    private String reasonDescription;

    /**
     * 本次退费金额
     */
    private BigDecimal amount;

    /**
     * 是否保存为草稿
     */
    private Boolean draftFlag;

    /**
     * 备注
     */
    private String remark;

    /**
     * 是否特殊退费：0否、1是
     */
    private Boolean specialFlag;
    /**
     * 是否已开发票；枚举值：未开发票｜0、已开票｜1
     */
    private Boolean invoiceFlag;
    /**
     * 是否贷款学员；枚举值：非贷款学员｜0、贷款学员｜1
     */
    private Boolean loanFlag;
    /**
     * 所属公司编码;财务上退费资金所属的公司。
     */
    private String companyCode;
    /**
     * 所属公司名称；财务上退费资金所属的公司。
     */
    private String companyName;
}
